package Libs.Componentes.NaoVisuais
{
	import mx.controls.Alert;
	import mx.rpc.events.FaultEvent;
	import mx.rpc.events.ResultEvent;
	import mx.rpc.remoting.RemoteObject;

	public class ObjetoRemoto extends RemoteObject
	{
		public function ObjetoRemoto(source:String, funcSucesso:Function = null, funcFalha:Function = null)
		{
			this.destination = "fluorine";
			this.source = source;
			this.showBusyCursor = true;
			
			if (funcSucesso != null)
			{
				this.addEventListener(ResultEvent.RESULT, funcSucesso);
			}
			else
			{
				this.addEventListener(ResultEvent.RESULT, rstSucesso);
			}
			
			if (funcFalha != null)
			{
				this.addEventListener(FaultEvent.FAULT, funcFalha);
			}
			else
			{
				this.addEventListener(FaultEvent.FAULT, rstFalha);
			}
		}
		
		private function rstFalha(evt:FaultEvent):void
		{
			var mensagem:String;
			mensagem = evt.fault.message.toString();
			mensagem = mensagem.replace("faultCode:Server.Processing faultString:","");
			mensagem = mensagem.replace("faultDetail:'null'","");
			mensagem = mensagem.replace("'","");
			mensagem = mensagem.replace("' ","");
			Alert.show("Não foi possível executar o método.\r\r" + 
				mensagem, "Neturion Solutions");
		}
		
		private function rstSucesso(evt:ResultEvent):void
		{
			Alert.show("Executado com Sucesso!","Neturion Solutions");
		}
	}
}